Rustであそぶ
概要
1.0出たので。
;が嫌いな自分が、初めて「;我慢」してもいいな~~~と思った言語。
というか;の必要な位置の定義が面白い。
letまわりの定義、セット、関数の実行に関しては;が必要。
あと色々とモダン気味。
よさ
tupleな
let (_a, _b) = (1, true);
いろんなのが複数の要素を返せる。返したそばから束縛可能。Pythonとか検索会社の作ってる行くって言語みたい。
型を決めずに初期化から型の固定
let a;
a = 100;
a = false;// これはコンパイルエラーになる
変数の型指定なしでの初期化ができる。
aに何もセットしないまま使おうとするとuninitializeエラーが出る。
良いことだと思う。
これで、インスタンスとか変数を渡して中で何かするメソッドを滅せる。
多数の値を返せるところも、そのマッピングまで一発なので、汚い関数を作るニーズがほぼ存在しなくなるのでは。
{};の扱い
{};は式なので、値を返せる。素敵。
let a = {
100
};
とかが可能。これで、以下の利点が出そう。
・値を設定するための処理が隔離できるのでメソッド化までしたくない組み合わせを特定のコンテキスト内に隠蔽できる
→依存している部分の明示が可能
→過度の抽象化=メソッド化を防げる
→変数名に気をつける文化
→エディタによってブラケット閉じたり開けたりできるので擬似メソッドぽい表現ができる
コンパイラワーニングによる自動的なルールづけ
変数名について、snake_caseとかをちゃんとやらないとコンパイラがWarnでやんわりと殴りかかってくる。
良い。
他
macroある
コンパイラプラグインある
実行速度爆速
など。